<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>寄生组合式继承</title>
</head>
<body>
<!--基本思想：通过借用函数来继承属性，通过原型链的混成形式来继承方法-->
<script>
  function beget(obj) {//生孩子函数
    var F = function () {
    };
    F.prototype = obj;
    return new F();
  }

  function Super() {
    //在此声明基本属性和引用属性
    this.val = 1;
    this.arr = [1];
  }

  //在此声明函数
  Super.prototype.fun1 = function () {
  };
  Super.prototype.fun2 = function () {
  };

  function Sub() {
    Super.call(this);//核心代码
  }

  var proto = beget(Super.prototype);//核心
  proto.constructor = Sub; //核心
  Sub.prototype = proto;  //核心代码
  var sub = new Sub();
  console.log(sub);
</script>
</body>
</html>